package com.tbit.uqbike.webmanager.dao.log;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tbit.config.datasource.DataSource;
import com.tbit.uqbike.object.pojo.BatteryLog;
import com.tbit.uqbike.object.pojo.BatteryOperationCount;
import com.tbit.uqbike.object.pojo.vo.BatteryLogCountVO;
import com.tbit.uqbike.object.pojo.vo.BatteryLogVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 电池操作记录Mapper接口
 *
 * @Author:BUGTian
 * @DATE: 2022/5/12
 */
@DS(DataSource.LOG)
public interface BatteryLogDao {

    /**
     * 分页查询电池操作记录
     *
     * @param accountId
     * @param startTime
     * @param endTime
     * @param accountUserId
     * @return
     */
    List<BatteryLogVO> query(@Param("accountId") Integer accountId, @Param("startTime") Date startTime, @Param("endTime") Date endTime,
                             @Param("accountUserId") Integer accountUserId, @Param("batteryNO") String batteryNO, @Param("type") Integer type);


    /**
     * 电池操作数量统计
     *
     * @param accountId
     * @param startTime
     * @param endTime
     * @param accountUserId
     * @return
     */
    List<BatteryOperationCount> queryBatteryOperationCount(@Param("accountId") Integer accountId, @Param("startTime") Date startTime,
                                                           @Param("endTime") Date endTime, @Param("accountUserId") Integer accountUserId);

    /**
     * 电池出入库总览(根据操作类型、人员id分组)
     */
    List<BatteryLogCountVO> queryOverview(@Param("accountId") Integer accountId, @Param("startTime") Date startTime,
                                          @Param("endTime") Date endTime, @Param("accountUserId") Integer accountUserId);

    /**
     * 添加电池操作记录
     *
     * @param accountId
     * @param batteryId
     * @param batteryNO
     * @param type
     * @param accountUserId
     * @param addTime
     * @param remark
     */
    void insert(@Param("accountId") Integer accountId, @Param("batteryId") Integer batteryId, @Param("batteryNO") String batteryNO,
                @Param("type") Integer type, @Param("accountUserId") Integer accountUserId, @Param("addTime") Date addTime,
                @Param("remark") String remark);

    /**
     * 批量新增电池操作记录
     * @param batteryLogList batteryLog
     */
    void batchAddBatteryLog(@Param("batteryLogList") List<BatteryLog> batteryLogList);
}
